/**
 * 上海中赢金融信息服务有限公司
 * Copyright (c) 2016-2026 hmc,Inc.All Rights Reserved.
 */
package com.sys.midware.assist.regex;

import java.math.BigInteger;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import com.sys.midware.assist.utils.date.DateUtil;
import com.sys.midware.assist.utils.string.StringUtil;

/**
 * 正则解析工具类
 * <b>@author：</b> mobing <br/>
 * <b>@date：</b> 2016年1月19日 下午5:54:27 <br/>
 * <b>@version: </b>  <br/>
 */
public class RegexUtil {
	/**
	 * 根据正则表达式获取匹配到的字符串
	 * @param orig
	 * @param regExp 如："(?<name>.*?)/jobName"
	 * @return
	 */
	public static String getMatchedStr(String orig, String regExp,String groupText){
		String val = null;
		if(StringUtil.isEmpty(regExp) ){
			return null;
		}
		Pattern pattern = Pattern.compile(regExp);
		Matcher matcher = pattern.matcher(orig);
		if(matcher.find()){
			val = matcher.group(groupText);
		}
		//删除html
		return val;
	}
	
	/**
	 * 根据正则表达式获取匹配到的字符串
	 * @param orig
	 * @param regExp
	 * @return
	 */
	public static String getMatchedStr(String orig, String regExp){
		String val = null;
		if(StringUtil.isEmpty(regExp) ){
			return null;
		}
		Pattern pattern = Pattern.compile(regExp);
		Matcher matcher = pattern.matcher(orig);
		if(matcher.find()){
			val = matcher.group();
		}
		return val;
	}
	
	/**
	 * 根据正则表达式获取匹配到的浮点数
	 * @param orig
	 * @param regExp
	 * @return
	 */
	public static Float getMatchedFloat(String orig, String regExp){
		String val = getMatchedStr(orig,regExp);
		return StringUtil.stringToFloat(val);
	}
	/**
	 * 根据正则表达式获取匹配到的长整数
	 * @param orig
	 * @param regExp
	 * @return
	 */
	public static Long getMatchedLong(String orig, String regExp){
		String val = getMatchedStr(orig,regExp);
		return StringUtil.stringToLong(val);
	}
	
	/**
	 * 根据正则表达式获取匹配到的整数
	 * @param orig
	 * @param regExp
	 * @return
	 */
	public static Integer getMatchedInteger(String orig, String regExp){
		String val = getMatchedStr(orig,regExp);
		return StringUtil.stringToInteger(val);
	}
	/**
	 * 根据正则表达式获取匹配到的长整数
	 * @param orig
	 * @param regExp
	 * @return
	 */
	public static BigInteger getMatchedBigInteger(String orig, String regExp){
		String val = getMatchedStr(orig,regExp);
		if(val == null){
			return null;
		}
		return BigInteger.valueOf(StringUtil.stringToLong(val));
	}
	/**
	 * 根据正则表达式获取匹配到的日期类型
	 * @param orig
	 * @param regExp
	 * @return
	 */
	public static Date getMatchedDate(String orig, String regExp){
		String val = getMatchedStr(orig,regExp);
		if(val ==null){
			return null;
		}
		return DateUtil.putFMStrToDate(val);
	}
	
}
